package edu.wschina.module_c_hanoitower;

import android.app.Application;
import android.content.SharedPreferences;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class MyApp extends Application {
    private static MyApp myApp;
    // 私有列表，用于存储游戏中的Item对象
    public List<JSONObject> rankItems;

    public int towerCount=3;

    public int diskCount=3;

    public String nickName="Jack";

    public int should = 7;

    public int itemPerPage=6;

    public static MyApp getInstance() {
        return myApp;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        myApp = this;
    }

    //将数据写入本地数据
    public void addItem(RankItem item) {
        // 获取SharedPreferences对象（用于存储数据）
        SharedPreferences settings = getApplicationContext().getSharedPreferences("snake", 0);
        // 获取SharedPreferences的编辑器，用于写入数据
        SharedPreferences.Editor editor = settings.edit();
        // 将Item对象转换为JSON字符串
        JSONObject j = item.toJson();
        // 使用Item的日期作为键，将JSON字符串存储到SharedPreferences中
        editor.putString(item.id, j.toString());
        // 提交更改
        editor.apply();
        //重新读取所有数据至this.items;
    }

    public void addItem(String id,JSONObject item) {
        // 获取SharedPreferences对象（用于存储数据）
        SharedPreferences settings = getApplicationContext().getSharedPreferences("snake", 0);
        // 获取SharedPreferences的编辑器，用于写入数据
        SharedPreferences.Editor editor = settings.edit();
        // 将Item对象转换为JSON字符串
//        JSONObject j = item.toJson();
        // 使用Item的日期作为键，将JSON字符串存储到SharedPreferences中
        editor.putString(id, item.toString());
        // 提交更改
        editor.apply();
        //重新读取所有数据至this.items;
    }

    // 从SharedPreferences中获取所有Item对象
    public List<JSONObject> getRankItems() {
        // 获取SharedPreferences对象
        SharedPreferences sp = getApplicationContext().getSharedPreferences("snake", 0);
        // 获取SharedPreferences中所有的键值对
        Map<String, ?> allEntries = sp.getAll();
        // 初始化items列表
        this.rankItems = new ArrayList<>();
        // 遍历所有的键值对
        for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
            // 获取值，并转换为字符串
            String str = entry.getValue().toString();
            // 初始化JSONObject对象（用于从字符串解析JSON数据）
            try {
                JSONObject  o = new JSONObject(str);
                this.rankItems.add(o);
            } catch (JSONException e) {

            }
        }
        // 返回items列表
        return this.rankItems;
    }
}
